libxl: add shutdown reason to libxl_dominfo
authorIan Campbell <ian.campbell@citrix.com>
Tue, 27 Jul 2010 15:57:38 +0000 (16:57 +0100)
committerIan Campbell <ian.campbell@citrix.com>
Tue, 27 Jul 2010 15:57:38 +0000 (16:57 +0100)
Removes the need for explicit libxl_dominfo.crashed so remove it.

Signed-off-by: Ian Campbell <ian.campbell@citrix.com>
Committed-by: Ian Jackson <ian.jackson@eu.citrix.com>
tools/libxl/libxl.c
tools/libxl/libxl.h
tools/libxl/xl_cmdimpl.c

index 850d80735103018272dc5767fe0467353a0dcdd8..3a76b9dfa4d21cea4390095e50b239facdf981e9 100644 (file)
@@ -405,8 +405,6 @@ int libxl_domain_resume(struct libxl_ctx *ctx, uint32_t domid)
 static void xcinfo2xlinfo(const xc_domaininfo_t *xcinfo,
                           struct libxl_dominfo *xlinfo)
 {
-    unsigned int shutdown_reason;
-
     memcpy(&(xlinfo->uuid), xcinfo->handle, sizeof(xen_domain_handle_t));
     xlinfo->domid = xcinfo->domain;
 
@@ -415,14 +413,11 @@ static void xcinfo2xlinfo(const xc_domaininfo_t *xcinfo,
     xlinfo->paused   = !!(xcinfo->flags&XEN_DOMINF_paused);
     xlinfo->blocked  = !!(xcinfo->flags&XEN_DOMINF_blocked);
     xlinfo->running  = !!(xcinfo->flags&XEN_DOMINF_running);
-    xlinfo->crashed  = 0;
-
-    shutdown_reason = (xcinfo->flags>>XEN_DOMINF_shutdownshift) & XEN_DOMINF_shutdownmask;
 
-    if ( xlinfo->shutdown && (shutdown_reason == SHUTDOWN_crash) ) {
-        xlinfo->shutdown = 0;
-        xlinfo->crashed  = 1;
-    }
+    if (xlinfo->shutdown || xlinfo->dying)
+        xlinfo->shutdown_reason = (xcinfo->flags>>XEN_DOMINF_shutdownshift) & XEN_DOMINF_shutdownmask;
+    else
+        xlinfo->shutdown_reason  = ~0;
 
     xlinfo->max_memkb = PAGE_TO_MEMKB(xcinfo->tot_pages);
     xlinfo->cpu_time = xcinfo->cpu_time;
index cb250ed53e9a27a6a7cf77a410961e5354bdfcf6..88c451c30cc43cf183a8e2cd90898256c5810e83 100644 (file)
@@ -29,8 +29,16 @@ struct libxl_dominfo {
     uint8_t blocked:1;
     uint8_t paused:1;
     uint8_t shutdown:1;
-    uint8_t crashed:1;
     uint8_t dying:1;
+
+    /*
+     * Valid SHUTDOWN_* value from xen/sched.h iff (shutdown||dying).
+     *
+     * Otherwise set to a value guaranteed not to clash with any valid
+     * SHUTDOWN_* constant.
+     */
+    unsigned int shutdown_reason;
+
     uint64_t max_memkb;
     uint64_t cpu_time;
     uint32_t vcpu_max_id;
index 5f3a6d379f69771c236766c8daae7a5556c4299b..839fea0c2910aedef96f83ebfe517a74d3a7d6eb 100644 (file)
@@ -1935,7 +1935,7 @@ void list_domains(int verbose)
                 info[i].blocked ? 'b' : '-',
                 info[i].paused ? 'p' : '-',
                 info[i].shutdown ? 's' : '-',
-                info[i].crashed ? 'c' : '-',
+                info[i].shutdown_reason == SHUTDOWN_crash ? 'c' : '-',
                 info[i].dying ? 'd' : '-',
                 ((float)info[i].cpu_time / 1e9));
         if (verbose) {